// using Microsoft.Extensions.Caching.Memory;
// using UniversalAdminSystem.Application.PermissionManagement.Interfaces;

// namespace UniversalAdminSystem.Infrastructure.Services;

// /// <summary>
// /// 权限缓存服务
// /// 提供权限信息的缓存功能，提高权限检查性能
// /// </summary>
// public class PermissionCacheService
// {
//     private readonly IMemoryCache _cache;
//     private readonly IPermissionCheckService _permissionCheckService;
//     private readonly TimeSpan _cacheExpiration = TimeSpan.FromMinutes(30); // 缓存30分钟

//     public PermissionCacheService(IMemoryCache cache, IPermissionCheckService permissionCheckService)
//     {
//         _cache = cache;
//         _permissionCheckService = permissionCheckService;
//     }

//     /// <summary>
//     /// 检查用户是否有指定权限（带缓存）
//     /// </summary>
//     /// <param name="userId">用户ID</param>
//     /// <param name="permissionCode">权限编码</param>
//     /// <returns>是否有权限</returns>
//     public async Task<bool> CheckUserPermissionAsync(Guid userId, string permissionCode)
//     {
//         var cacheKey = $"user_permission_{userId}_{permissionCode}";
        
//         if (_cache.TryGetValue(cacheKey, out bool cachedResult))
//         {
//             return cachedResult;
//         }

//         var result = await _permissionCheckService.CheckUserPermissionAsync(userId, permissionCode);
//         _cache.Set(cacheKey, result, _cacheExpiration);
        
//         return result;
//     }

//     /// <summary>
//     /// 获取用户的所有权限（带缓存）
//     /// </summary>
//     /// <param name="userId">用户ID</param>
//     /// <returns>权限编码列表</returns>
//     public async Task<IEnumerable<string>> GetUserPermissionsAsync(Guid userId)
//     {
//         var cacheKey = $"user_permissions_{userId}";
        
//         if (_cache.TryGetValue(cacheKey, out IEnumerable<string> cachedPermissions))
//         {
//             return cachedPermissions;
//         }

//         var permissions = await _permissionCheckService.GetUserPermissionAsync(userId);
//         _cache.Set(cacheKey, permissions, _cacheExpiration);
        
//         return permissions;
//     }

//     /// <summary>
//     /// 获取用户的所有角色（带缓存）
//     /// </summary>
//     /// <param name="userId">用户ID</param>
//     /// <returns>角色名称列表</returns>
//     public async Task<IEnumerable<string>> GetUserRolesAsync(Guid userId)
//     {
//         var cacheKey = $"user_roles_{userId}";
        
//         if (_cache.TryGetValue(cacheKey, out IEnumerable<string> cachedRoles))
//         {
//             return cachedRoles;
//         }

//         var roles = await _permissionCheckService.GetUserRolesAsync(userId);
//         _cache.Set(cacheKey, roles, _cacheExpiration);
        
//         return roles;
//     }

//     /// <summary>
//     /// 清除用户权限缓存
//     /// </summary>
//     /// <param name="userId">用户ID</param>
//     public void ClearUserCache(Guid userId)
//     {
//         var pattern = $"user_*_{userId}*";
//         // 注意：IMemoryCache不支持模式匹配删除，这里只是示例
//         // 在实际项目中，可能需要使用Redis或其他支持模式匹配的缓存
//         _cache.Remove($"user_permissions_{userId}");
//         _cache.Remove($"user_roles_{userId}");
//     }

//     /// <summary>
//     /// 清除所有权限缓存
//     /// </summary>
//     public void ClearAllCache()
//     {
//         // 注意：IMemoryCache不支持清空所有缓存
//         // 在实际项目中，可能需要使用Redis或其他缓存方案
//         Console.WriteLine("权限缓存已清除");
//     }
// } 